#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define ARCHIVO "Alumnos.bin"

typedef struct Alumno
{
    int id;
    char nia[12];
    char provincia[16];
    char nombre[16];
    char apellidos[12];
    float nota;
} Alumno;

void usage(const char *);

int main (int ac, char **av)
{
    if(ac == 1)
    {
        usage(av[0]);
        exit(1);
    }
    Alumno alumno;
    long i  = atol(av[1]);
    long posicion = i * sizeof(Alumno);
    FILE *stream = fopen(ARCHIVO,"rb");

    if(!stream)
    {
        fprintf(stderr, "At %s, line %d:\n\tERROR: could not open file %s:%s\n",
                __FILE__,
                __LINE__,
                ARCHIVO,
                strerror(errno));
        exit(1);
    }

    fseek(stream, posicion, SEEK_SET);
    printf ("%ld\n", posicion);

    fread(&alumno,sizeof(Alumno),1,stream);
    printf("%d %s %s %s %s %f\n",
            alumno.id, alumno.nia,
            alumno.provincia,alumno.nombre,
            alumno.apellidos,alumno.nota);

    posicion = ftell(stream);
    printf ("%ld\n", posicion);

    fclose(stream);
}

#define MSG_SIZE 256
void usage(const char *fpath)
{
    fprintf(stderr, "Usage: %s <number>\n", fpath);
    fprintf(stderr, "ERROR: wrong number of arguments\n");
}
